In the networked computing environment of today, processes that can run in number of different environments are becoming increasingly more sought after. One solution for facilitating these types of processes is the Java Virtual Machine (JVM) used in the JAVA environment (Java and Java Virtual Machine are a trademark of Sun Microsystems in the United States and/or elsewhere). A JVM is a platform dependent engine that executes platform independent code written in a high-level programming language. Thus, the same code (which can be written in any of a number of different programming languages) can be executed on many different platforms by utilizing a JVM that is designed for each platform.
One group of programming languages that can be used in the JAVA environment is that of dynamically typed languages. Dynamically typed languages can be made to run faster on a Java Virtual Machine (JVM) than in the past due to additional support that has been provided. A key part of this support is the addition of a Java bytecode (invokedynamic) for method invocation, and an accompanying linkage mechanism that involves a construct called a method handle. These features can enable implementers of compilers for dynamically typed languages, that is, the people who develop compilers for languages such as JRuby and Jython, to generate bytecode that runs extremely fast on a JVM.
A method handle is a simple object of type java.lang.invoke.MethodHandle that contains an anonymous reference to a JVM method. A method handle can be callable just like a named reference to a method. What makes it unique, however, is that it is accessed through a pointer structure, as opposed to a linked name.